﻿// Principia
// Copyright (C) 2008 Blake Hegerle
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

using System.Collections.Generic;
using System.IO;
using Principia.Core.Parsing.ContextFree;

namespace Principia.Core.Parsing.LexicalAnalysis
{
    public class LexerBuilder
    {
        private readonly List<Lexer.Rule> Rules = new List<Lexer.Rule>();

        public void Add(ITerminal Terminal, string Value, params string[] Alternatives)
        {
            foreach (var Alt in Alternatives)
                Rules.Add(new Lexer.Rule
                          {
                              Match = Alt,
                              Terminal = Terminal,
                              Value = Value
                          });
        }

        public Lexer NewLexer(TextReader Reader)
        {
            return new Lexer(Reader, Rules);
        }
    }
}